home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #42 (1995-01)(PackMAN)(DE)[WB].zip / Purity #42 (1995-01)(PackMAN)(DE)[WB].adf / Includes3v1 / Includes3v1.lha / Utils / TagUtils.i < prev    next >
Text File  |  1994-12-04  |  2KB  |  83 lines

  1.  
  2. {$I   "Include:Utility/TagItem.i"}
  3.  
  4. {
  5.  
  6.   Achtung (1) !  Diese Funktion läuft nur unter PCQ-Pascal 1.2d !!!
  7.   Achtung (2) !  Die Utility Library muß vorher geöffnet werden !!!
  8.  
  9.  
  10.   In PCQ-Pascal mußte man Tag-Listen so definieren:
  11.    MyTags[0].ti_Tag:=WA_Left;
  12.    MyTags[0].ti_Data:=50;
  13.    MyTags[1].ti_Tag:=WA_Top;
  14.    MyTags[1].ti_Data:=100;
  15.    MyTags[2].ti_Tag:=WA_Width;
  16.    MyTags[2].ti_Data:=200;
  17.    MyTags[3].ti_tag:=WA_Height;
  18.    MyTags[3].ti_Data:=60;
  19.    MyTags[4].ti_Tag:=WA_Title;
  20.    MyTags[4].ti_Data:=Integer("Test");
  21.    MyTags[5].ti_Tag:=TAG_DONE;
  22.  
  23.  Das war mir viel zu umständlich.
  24.  Darum habe ich die Funktion CreateTagList geschrieben.
  25.  Dieses Beispiel bewirkt das gleiche wie das Beispiel oben:
  26.  
  27.  TagList:=CreateTagList(
  28.                      WA_Left,      50,
  29.                      WA_Top,      100,
  30.                      WA_Width,    200,
  31.                      WA_Height,    60,
  32.                      WA_Title, "Test",
  33.                      TAG_DONE );
  34.  
  35.  Zum Schluß muß TAG_END oder TAG_DONE angegeben werden.
  36.  Es können maximal 40 TagItems angegeben werden, der Rest wir überlesen.
  37.  Wenn Sie mehr TagItems benötigen, dann geben Sie für die Konstante
  38.  MaxNumTags eine höhere Zahl an.
  39.  
  40.  Die so generierte Tagliste muß nach Gebrauch unbedingt mit der
  41.  Funktion FreeTagItems (utility.library)  freigegeben werden !
  42.  
  43.  Copyright © 1994 by Andreas Tetzl
  44.  
  45. }                                                                    
  46.  
  47.  
  48. {$C+}
  49.  
  50. FUNCTION CreateTagList(...) : Address;
  51.  
  52. CONST   MaxNumTags = 40;
  53.  
  54. VAR ArgPtr     : Address;
  55.     i          : Integer;
  56.     NewTagList : Address;
  57.     MyTags     : Array[1..MaxNumTags] of TagItem;
  58.  
  59. BEGIN
  60.   VA_Start(ArgPtr);
  61.  
  62.   i:=0;
  63.   REPEAT
  64.  
  65.     Inc(i);
  66.     MyTags[i].ti_Tag := VA_Arg( ArgPtr, Integer );
  67.  
  68.     IF   MyTags[i].ti_tag  <> TAG_DONE
  69.     THEN MyTags[i].ti_Data := VA_Arg(ArgPtr,Integer);
  70.  
  71.   UNTIL (MyTags[i].ti_tag=TAG_DONE) OR (i=MaxNumTags);
  72.  
  73.   IF i = MaxNumTags
  74.    THEN MyTags[MaxNumTags].ti_tag := TAG_DONE;
  75.  
  76.   NewTagList    := CloneTagItems(adr(MyTags));
  77.   CreateTagList := NewTagList;
  78.  
  79. END;
  80. {$C-}
  81.  
  82.  
  83.